class Solution {
public:
    int longestOnes(vector<int>& nums, int k) {
        // 这道题也是要进行转化
        // 转化为连续子数组中包含不超过k个0的最长子数组
        int n = nums.size(), zero = 0, ans = 0, left = 0;
        for(int i = 0; i < n; i++)
        {
            if(nums[i] == 0)
                zero++;     // 进窗口
            while(zero > k) // 判断，当窗口内0的个数大于k时，就要出窗口
                if(nums[left++] == 0)
                    zero--; // 出窗口
            ans = max(ans, i - left + 1);   // 更新结果
        }
        return ans;
    }
};